Convolution is a type of image processing and is used, for example, to blur or sharpen graphical images or to enhance edges in a graphical image. Convolution is well-known but is described briefly for completeness. Generally, a source image is convolved to produce a resulting image. Each pixel of the resulting image is a weighted combination of a corresponding pixel of the source image and pixels in proximity to the corresponding pixel of the source image. For example, to convolve a pixel at the center of a matrix of pixels of three rows by three columns, each of the pixels of the matrix is multiplied by a corresponding scalar coefficient of a convolution matrix having three rows by three columns of coefficients and the resulting products are summed to produce a pixel in the resulting image.
The particular coefficients of the convolution matrix determine the particular effect on the source image of the convolution. For example, if coefficients near the center of the convolution matrix are relatively small and coefficients far from the center of the convolution matrix are relatively large, the source image is blurred in the resulting image. If the coefficient at the center of the convolution matrix is relatively large and coefficients near but not at the center are relatively small and negative, the source image is sharpened.
Convolution of a graphical image requires substantial resources. For example, even using a relatively small convolution matrix which has only three rows and three columns of scalar coefficients requires nine (9) multiplication operations and eight (8) addition operations for each pixel. In addition, nine (9) read operations are required to obtain a three-row by three-column matrix of pixels from the source image. Graphical images typically include a rectangular grid of pixels and can be as large as one thousand or more columns of one thousand or more rows of pixels. Thus, source images having as many as one million or more pixels are convolved. Furthermore, pixels of color graphical images typically have three (3) components, namely, red, green, and blue. To convolve a color image, each component of the color image must be convolved. Each component is typically convolved independently of other components. Thus, convolution of a large color source image can involve as many as 27 million read operations, 27 million multiplication operations, 24 million addition operations, and 27 million store operations. Accordingly, some conventional convolution systems require as many as 105 million instruction cycles to convolve a color graphical image having one million pixels using a colvolution matrix having three columns and three rows. Convolution involving larger convolution matrices, e.g., matrices which have five rows and five columns of scalar coefficients or matrices which have seven rows and seven columns of scalar coefficients, require considerably more processing.
Because of the substantial computer resources required to convolve graphical images, a need for ever increasingly efficient convolution systems persists in the industry.